今天語音轉文字,寫了第一個程式,首先先載入pyttsx3模組
https://pythonprogramminglanguage.com/text-to-speech/
from gtts import gTTS
import os
#此句為輸入的文字
mytext = 'Convert this Text to Speech in Python'
language = 'en'
myobj = gTTS(text=mytext, lang=language, slow=False)
#儲存為output的mp3檔案
myobj.save("output.mp3")
os.system("start output.mp3")
而後我又嘗試了使用中文
from gtts import gTTS
import os
mytext = '你好嗎?早安 喔'
language = 'zh-tw'
myobj = gTTS(text=mytext, lang=language, slow=False)
myobj.save("output.mp3")
os.system("start output.mp3")
可以輸入文字輸出語音,可是我得反過來使用語音輸出文字,於是我使用了speech_recognition來辨別說出的文字,程式碼為此:
import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
audio = r.listen(source)
r.recognize_google(audio, language='zh-TW')
print(r)
而成果卻不太理想,輸出的結果為:
<speech_recognition.Recognizer object at 0x000001B7E55C9820>
很明顯的輸出為亂碼,不是人能辨識出來的,所以我用了下一個程式來解決問題,在下列程式中,text是辨識出的文字,language = "zh-TW"為台灣使用的語言,而我將辨識出的文字存為json檔案,將json傳給處理後端的RASA處理,將json變為RASA輸入的文字,以此來回覆輸出。
#import library
import speech_recognition as sr
import json
r = sr.Recognizer()
with sr.Microphone() as source:
audio_text = r.listen(source)
try:
text = r.recognize_google(audio_text)
print('Converting audio transcripts into text …')
print(text)
text = r.recognize_google(audio_text, language = "zh-TW")
print('Text: '+r.recognize_google(audio_text, language = "zh-TW"))
myDict = {
"input_value": text
}
with open("output.json", "w", encoding="utf8") as f:
json.dump(myDict, f, ensure_ascii=False)
#print(json.dumps(myDict))
except:
print('Sorry.. run again…')
這段程式寫的則是輸出文字轉為json檔案,若是沒偵測到則顯示sorry..run again…